﻿/*
 * @author				: Willian Silva
 * @create				: 12/03/2011
 * @last modified		: 26/07/2011
 * @version				: 2.0
 * @description			: Classe Pessoa.Voluntario, responsável por listar os voluntarios do sistema
*/

Ext.ns('App.Pessoa');

App.Pessoa.Voluntario = Ext.extend(Ext.grid.GridPanel,{
	
	id: 'pessoaVoluntario'
	,stripeRows	: true	
	,loadMask	: true
	,autoWidth 	: true
	,layout		: 'fit'
	,border		: false
	
	,constructor: function()
	{
		
		var controlePaginacao = {
			start: 0,
			limit: 10
		};
		
		
		this.CarregaGrid = new Ext.data.Store({
            reader: new Ext.data.JsonReader({
				fields: [
					 'codigo'
					, 'nome'
					, 'email'
					, 'dataNascimento'
					, 'sexo'
					, 'cpf'
					, 'rg'
					, 'telefoneResidencial'
					, 'telefoneComercial'
					, 'celular'
					, 'endLogradouro'
					, 'endNumero'
					, 'endCep'
					, 'endBairro'
					, 'endCidade'
					, 'endEstado'
					, 'endComplemento'
					, 'dataCadastro'
					, 'situacao'
					, 'apelido'
					, 'cidadeNascimento'
					, 'rgEmissor'
					, 'rgEstadoEmissor'
					, 'rgDataExpedicao'
					, 'certNascNumero'
					, 'certNascLivro'
					, 'certNascFolhas'
					, 'certNascComarca'
					, 'certNascEstado'
					, 'certNascEmissao'
					, 'titEleiNumero'
					, 'titEleiZona'
					, 'titEleiSecao'
					, 'titEleiVotacao'
					, 'observacao'
					, 'Pessoa_codigo'
					, 'VoluntarioTipo_codigo'
					,'areaAtuacao'
					,'escolaridade'
					,'formacao'
					,'disPeriodicidade'
					,'disDias'
					,'disHorario'
					,'proposta'
					,'aceito'

				],
				root: 'elements',
				totalProperty: 'results'
            }),
            proxy: new Ext.data.HttpProxy({
                url: baseURL + '/service/index.php?controller=VoluntarioController&service=listarVoluntarios',
                method: 'POST'
            }),
			baseParams: controlePaginacao
			
        });
		
		this.pesquisaVoluntarios = new Ext.app.SearchField({
			store: this.CarregaGrid,
			params: {start: 0, limit: 10},
			width: 280,
			id: 'pesquisaVoluntarios',
			emptyText: 'Entre com nome, rg, cpf ou bairro'
		});
		
		
		App.Pessoa.Voluntario.superclass.constructor.apply(this, arguments);
	}
	
	,initComponent: function()
	{
		this.barButton = new Ext.Toolbar({
			
			items: [
				{
                	text: 'Novo'
                	,handler: this.createRecord
                	,iconCls: 'bt_novo'
                	,ref: 'novo'
            	}
            	,{
                	text: 'Editar'
                	,iconCls: 'bt_editar'
                	,handler: this.editRecord
                	,disabled: true
                	,id: 'btEditarVol'
            	}
            	,{
                	text: 'Deletar'
                	,iconCls: 'bt_deletar'
                	,handler: this.deleteRecord
                	,disabled: true
                	,ref: 'deletar'
                	,id: 'btDeletarVol'
            	},
				this.pesquisaVoluntarios
            ]
           
		});
		
		Ext.apply(this,{
			 viewConfig:{
				 emptyText		: 'Nenhum registro encontrado'
			 	,deferEmptyText : false
			 }
			,store: this.CarregaGrid
			,tbar: this.barButton
			,width: '100%'
			,bbar: new Ext.PagingToolbar({
                pageSize: 10,
                store: this.CarregaGrid,
                displayInfo: true
            })
			,autoExpandColumn: 'nome'
			,columns:[
				{
					dataIndex	: 'codigo'
					,id			: 'codigo'
					,header		: 'Cod'
					,width		: 50
				}
					
				,{
					dataIndex	: 'nome'
					,id			: 'nome'
					,header		: 'Nome'
				}
				
				,{
					 dataIndex	: 'telefoneResidencial'
					,header		: 'Telefone'
					,width		: 150
					,renderer: Ext.util.Format.maskRenderer('(99)9999-9999')
				}
				,{
					 dataIndex	: 'celular'
					,header		: 'Celular'
					,width		: 150
					,renderer: Ext.util.Format.maskRenderer('(99)9999-9999')
				}
				,{
					 dataIndex	: 'endLogradouro'
					,header		: 'Rua'
					,width		: 190
				}
				,{
					 dataIndex	: 'endBairro'
					,header		: 'Bairro'
					,width		: 190
				}
				,{
					 dataIndex	: 'endCidade'
					,header		: 'Cidade'
					,width		: 190
				}
				,{
					 dataIndex	: 'situacao'
					,header		: 'Situação'
					,renderer	: trataSituacao
				}
			]
			
		})
		
		this.getSelectionModel().on('selectionchange', function(sm){
			
			Ext.getCmp('btEditarVol').setDisabled(sm.getCount() < 1)
			Ext.getCmp('btDeletarVol').setDisabled(sm.getCount() < 1)
			
		});
		
		this.carregaGrid();
			
		// super
		App.Pessoa.Voluntario.superclass.initComponent.call(this);
	
		
	}
	
	,carregaGrid: function(){
		this.CarregaGrid.load();
	}
	
	
	,createRecord:function(){
		if(!this.winVoluntario)
		{
			this.winVoluntario = new App.Pessoa.VoluntarioForm({
				renderTo	: this.body //restringe área da janela
			});
		}
		
		this.winVoluntario.show();
		this.winVoluntario.resetForm();
	}
	
	
	,editRecord: function(){
		
		if(Ext.getCmp('pessoaVoluntario').getSelectionModel().hasSelection()){
			if(!this.winVoluntario)
			{
				
				this.winVoluntario = new App.Pessoa.VoluntarioForm({
					renderTo	: this.body //restringe área da janela
				});
			}
			
			var selectedRow = Ext.getCmp('pessoaVoluntario').getSelectionModel().getSelections();
			var objetoVoluntario = selectedRow[0].data;
			
			if(objetoVoluntario.dataNascimento == "0000-00-00"){
				objetoVoluntario.dataNascimento = "";
			}
			
			this.winVoluntario.setaDados(objetoVoluntario);
			this.winVoluntario.show();
			
			
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Nenhum registro foi selecionado!',
				type: 'warning',
				pause: 3
			});
		}
		
	}
	
	,deleteRecord: function(){
		
		if(Ext.getCmp('pessoaVoluntario').getSelectionModel().hasSelection()){
			
			Ext.MessageBox.confirm('Confirmação de Exclusão','Realmente deseja excluir esse registro?', function(btn)
			{
				if(btn == 'yes')
				{
					var selectedRow = Ext.getCmp('pessoaVoluntario').getSelectionModel().getSelections();
					this.params = "codigoVoluntario=" + selectedRow[0].data.codigo;
					
					Ext.Ajax.request({
						url: baseURL + '/service/index.php?controller=VoluntarioController&service=excluir',
						success:  function(){
							Ext.ux.MessageBox.flash({
								msg: 'O registro foi excluído com êxito!',
								type: 'success'
							});
						   
							Ext.getCmp('pessoaVoluntario').carregaGrid();
							
						},

						failure: function(){
							Ext.ux.MessageBox.flash({
								msg: 'Não foi possível excluir o registro!',
								type: 'error'
							});
						},
						params: this.params,
						scope: this			
					});
				}
			}, this);
			
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Nenhum registro foi selecionado!',
				type: 'warning',
				pause: 3
			});
		}
		
	}

});


Ext.reg('pessoaVoluntario',App.Pessoa.Voluntario);


this.pessoaVoluntario = new App.Pessoa.Voluntario()

function writePessoaVoluntario(){
	var myCloseTab = centerTabs.get( 1 );
	if (myCloseTab){
		centerTabs.remove( myCloseTab );
	}
	var title = "Manter Voluntários";
	var tab = centerTabs.items.find(function(i){return i.title === title;});
	if(!tab) {
		tab = centerTabs.add({
			title:title,
			layout:'fit',
			items: [ this.pessoaVoluntario ],
			closable:true
		});
	}
	centerTabs.setActiveTab(tab);
	
}